package com.qf.util;

import com.qf.vo.CategorySellAmts;
import com.qf.vo.CategorySellVo;
import com.qf.vo.DayStatis;
import com.qf.vo.OrderAmtsVo;

import java.math.BigDecimal;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * time:2022/11/17 20:41
 *
 * @author:Cc
 */
public class DashboardUtils {

    /**
     * 合并统计时间
     *
     * @param userDayStatisticList
     * @param orderStatisticDayList
     * @return
     */
    public static String[] unionStatisticDay(List<DayStatis> userDayStatisticList, List<DayStatis> orderStatisticDayList) {
        Set<String> daysSet = new HashSet<>();
        for (DayStatis dayStatis : userDayStatisticList) {
            daysSet.add(dayStatis.getDayStr());
        }

        for (DayStatis dayStatis : orderStatisticDayList) {
            daysSet.add(dayStatis.getDayStr());
        }

        return daysSet.toArray(new String[0]);
    }

    /**
     * 合并时间的stream写法
     *
     * @param userDayStatisticList
     * @param orderStatisticDayList
     * @return
     */
    public static String[] unionStatisticDayStream(List<DayStatis> userDayStatisticList, List<DayStatis> orderStatisticDayList) {

        // if (userDayStatisticList.addAll(orderStatisticDayList)) {
        //     return userDayStatisticList.stream()
        //             .map(DayStatis::getDayStr)
        //             .collect(Collectors.toSet())
        //             .toArray(new String[0]);
        // }

        if (userDayStatisticList.addAll(orderStatisticDayList)) {
            return userDayStatisticList.stream().map(DayStatis::getDayStr).distinct().toArray(String[]::new);
        }
        return null;
    }

    /**
     * 填充数据.
     *
     * @param days      合并完的日期, 是一个数组
     * @param dayStatis 用户统计数据集合或者是订单的数据统计集合
     * @return
     */
    public static int[] fillDataUserStatisticCnts(String[] days, List<DayStatis> dayStatis) {
        // 参数校验
        int size = days.length; // 表示一共有多少个时间.
        int[] statisticCntsArray = new int[size]; // 初始化数据数组.当前用户或者是订单的数量.
        // 遍历合并的时间
        for (int i = 0; i < days.length; i++) {
            int count = 0;
            for (DayStatis dayStati : dayStatis) {
                String dayStr = dayStati.getDayStr();
                if (days[i].equals(dayStr)) {
                    count = dayStati.getCnts();
                    break;
                }
            }
            statisticCntsArray[i] = count;
        }
        return statisticCntsArray;
    }
}
